package com.df.bpm.utils.businessViewerV2;

import com.df.bpm.utils.businessViewerV2.informatization.C_requirement;
import com.df.common.utils.CommonUtils;
import javax.swing.*;
import javax.swing.table.TableColumn;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {
    /**
     * 服务地址
     * <P>例如：http://localhost:9902/businessOverview/</P>
     */
    public static String server="http://localhost:3030/";//businessInformationDTO/outputsEntityId
//    public static String server="http://192.168.0.11:8081/api/businessOverview/";
    public static Dimension maxSize=null;
    /**
     * 长度单位
     */
    public static double unit=10;

    public static void main(String[] args) throws Exception {
        getScreenMaxSize();
        JFrame jf=new JFrame();
        jf.setLocationRelativeTo(null);
        jf.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                // 关闭窗口时触发
            }
        });
        jf.setLayout(null);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);


        jf.setSize(400, 400);
        jf.setExtendedState(JFrame.MAXIMIZED_BOTH);
        jf.setVisible(true);
        C_requirement.show(jf);
    }

    /**
     * 隐藏列
     * @param inTab 目标table
     * @param hideIndex 目标列id
     */
    public static void hideCol(JTable inTab, int hideIndex) {
        TableColumn idColumn= inTab.getColumnModel().getColumn(hideIndex);
        idColumn.setWidth(0);
        idColumn.setMaxWidth(0);
        idColumn.setMinWidth(0);
        inTab.getTableHeader().getColumnModel().getColumn(hideIndex).setMaxWidth(0); //设置表的标题的宽度也为0,这个很重要
        inTab.getTableHeader().getColumnModel().getColumn(hideIndex).setMinWidth(0);
    }

    public static String printNonNullFields(Object obj) {

        String result= "";
        // 获取对象的类
        Class<?> clazz = obj.getClass();

        List<Field> fields=new ArrayList<>();

        Class<?> clazz4Parent=clazz.getSuperclass();
        if(CommonUtils.varIsNotBlank(clazz4Parent)){
            Field[] parentFields = clazz4Parent.getDeclaredFields();
            if(CommonUtils.varIsNotBlank(parentFields)){
                fields.addAll(Arrays.asList(parentFields));
            }
        }
        // 获取类的所有字段（包括私有字段）
        Field[] sonFields = clazz.getDeclaredFields();
        if(CommonUtils.varIsNotBlank(sonFields)){
            fields.addAll(Arrays.asList(sonFields));
        }

        // 遍历字段
        for (Field field : fields) {
            // 设置字段为可访问（即使是私有字段）
            field.setAccessible(true);

            try {
                // 获取字段的值
                Object value = field.get(obj);

                // 检查值是否为空（这里简单地使用null检查，你可以根据需要添加更复杂的检查）
                if (value != null) {
                    // 输出字段名和字段值
//                    System.out.println(field.getName() + " = " + value);
                    if(result.isEmpty()){
                        result = field.getName() + "=" + value;
                    }else{
                        result=result+"&"+field.getName() + "=" + value;
                    }
                }
            } catch (IllegalAccessException e) {
                // 处理访问异常（通常不会发生，因为我们已经设置了setAccessible(true)）
                e.printStackTrace();
            }
        }

        return result;
    }

    public static void getScreenMaxSize(){
        JFrame jf=new JFrame();
        jf.setExtendedState(JFrame.MAXIMIZED_BOTH);
        jf.setVisible(true);
        jf.setVisible(false);
        maxSize=jf.getSize();
        jf.dispose();
        double iw=maxSize.getWidth();//屏幕宽
        double ih=maxSize.getHeight();//屏幕高
        unit=Math.sqrt(iw*iw+ih*ih)/100;//用屏幕对角线尺寸的百分之一当作长度单位
    }


}
